package com.tjn.collection_;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * @author 陶镓妮
 * @version 1.0
 */
public class Collections_ {
    @SuppressWarnings("all")
    public static void main(String[] args) {
        //Collecitons类是一个操作Set，Map，List等集合的工具类
        //常用方法如下

        ArrayList list = new ArrayList();
        list.add("Monday");
        list.add("Tuesday");
        list.add("Wednesday");
        list.add("Thursday");
        list.add("Friday");
        list.add("Saturday");
        list.add("Sunday");
        System.out.println(list);

        //1.reverse(List)：反转List中元素顺序
        Collections.reverse(list);
        System.out.println("===反转===");
        System.out.println(list);

        //2.shuffle(List)：对List集合元素进行随机排序
        System.out.println("===随机排序===");
        for (int i = 0; i < 6; i++) {
            Collections.shuffle(list);

            System.out.println(list);//每次排的序都不一样
        }

        //3.sort(List)：根据元素的自然顺序对指定List集合元素按升序排序
        Collections.sort(list);
        System.out.println("===排序===");
        System.out.println(list);

        //4.sort(List, Comparator)：根据指定Comparator产生的顺序对List集合元素进行排序
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length() - ((String)o2).length();
            }
        });
        System.out.println("===制定顺序排序===");
        System.out.println(list);

        //5.swap(List, int, int)：将指定list集合中的i处元素和j处元素进行交换
        Collections.swap(list,3,5);
        System.out.println("===交换两个元素===");
        System.out.println(list);

        //6.Object max(Collection)：根据元素的自然顺序，返回给定集合中的最大元素
        System.out.println("===最大元素===");
        System.out.println(Collections.max(list));

        //7.Object max(Collection, Comparator)：根据Comparator指定的顺序，返回给定集合中的最大元素
        System.out.println("===指定顺序最大元素===");
        System.out.println(Collections.max(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length() - ((String)o2).length();
            }
        }));

        //8.int frequency(Collection, Object)：返回指定集合中指定元素的出现次数
        System.out.println("===指定元素出现的次数===");
        System.out.println(Collections.frequency(list,"Monday"));

        //9.void copy(List dest, List src)：将src中的内容复制到dest中
        ArrayList dest = new ArrayList();
        //必须先给dest赋值，大小和src一样才能完整拷贝
        for (int i = 0; i < list.size(); i++) {
            dest.add(i);
        }
        System.out.println("===复制===");
        Collections.copy(dest, list);
        System.out.println(dest);

        //10.boolean replaceAll(List list, Object oldVal, Object newVal)：使用新值替换List对象中的旧值
        System.out.println("===替换===");
        Collections.replaceAll(list, "Monday", " monday");
        System.out.println(list);
    }
}
